﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;

namespace BeniBastanYaratProject.Uye
{
    public partial class Sepetim : System.Web.UI.Page
    {
        DBBaglantiDataContext db = new DBBaglantiDataContext();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack)
            {
                return;
            }
            Session["uid"] = Membership.GetUser().ProviderUserKey;
            SepetiDoldur();
        }

        private void SepetiDoldur()
        {
            var AktifSepet = (from x in db.Sepets where x.UserID == new Guid(Membership.GetUser().ProviderUserKey.ToString()) && x.SepetAktifMi == true select x).FirstOrDefault();
            if (AktifSepet != null)
            {
                var SepetUrunleri = from x in db.SepetDetaylaris where x.SepetID == AktifSepet.SepetID select new { x.SepetID, x.UrunID, x.Urunler.UrunAdi, x.Urunler.UrunSezonlari.UrunSezonAciklama, UrunSatisFiyati = x.Urunler.UrunSatisFiyati.ToString() + " TL", x.Adet, x.Urunler.UrunResmiKucuk };
                GridView1.DataSource = SepetUrunleri;
                GridView1.DataBind();
            }
        }

        protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            var SilenecekUrun = (from x in db.SepetDetaylaris where x.SepetID == Convert.ToInt32(e.Keys["SepetID"]) && x.UrunID == Convert.ToInt32(e.Keys["UrunID"]) select x).FirstOrDefault();
            if (SilenecekUrun != null)
            {
                TextBox txt = GridView1.Rows[e.RowIndex].FindControl("txtAdet") as TextBox;
                if (SilenecekUrun.Adet == int.Parse(txt.Text))
                {
                    db.SepetDetaylaris.DeleteOnSubmit(SilenecekUrun);
                    db.SubmitChanges();
                    lblBilgi.Text = "Urun Silinmesi Başarılı";
                    SepetiDoldur();
                    Master.SepetHesapla();
                }
                else
                {
                    lblBilgi.Text = "İşlem Kesildi.. Adet Değiştirilmesi Tespit Edildi.. Silmeden Önce Lütfen Ürünü Güncelleyiniz ve Sonra Yeniden Siliniz...";
                }
            }
        }

        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            GridViewRow row = sender as GridViewRow;
       
        }

        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            var GuncellenecekUrun = (from x in db.SepetDetaylaris where x.SepetID == Convert.ToInt32(e.Keys["SepetID"]) && x.UrunID == Convert.ToInt32(e.Keys["UrunID"]) select x).FirstOrDefault();
            if (GuncellenecekUrun != null)
            {
                TextBox txt = GridView1.Rows[e.RowIndex].FindControl("txtAdet") as TextBox;
                GuncellenecekUrun.Adet = int.Parse(txt.Text);
                db.SubmitChanges();
                lblBilgi.Text = "Urun Güncellemesi Yapıldı";
                SepetiDoldur();
                Master.SepetHesapla();
            }
        }

        protected void btnSiparisVer_Click(object sender, EventArgs e)
        {
            Siparisler yeniSiparis = new Siparisler();
            yeniSiparis.UserID = new Guid(Membership.GetUser().ProviderUserKey.ToString());
            yeniSiparis.SiparisTarihi = DateTime.Now;
            yeniSiparis.SiparisDurumu = "Yeni Siparis";

            List<SiparisDetaylari> SiparisListesi = new List<SiparisDetaylari>();
            List<SepetDetaylari> SepetSilinecekUrunListesi = new List<SepetDetaylari>();
            foreach (GridViewRow item in GridView1.Rows)
            {
                if ((item.FindControl("CheckBox1") as CheckBox).Checked)
                {
                    SiparisDetaylari sp = new SiparisDetaylari();
                    sp.Siparisler = yeniSiparis;
                    sp.UrunID = int.Parse((item.FindControl("lblUrunID") as Label).Text);
                    sp.Adet = int.Parse((item.FindControl("txtAdet") as TextBox).Text);
                    sp.Fiyat = decimal.Parse((item.FindControl("lblFiyat") as Label).Text.Remove((item.FindControl("lblFiyat") as Label).Text.Length - 3, 3).Replace('.', ','));
                    sp.Not = "Yeni Siparis";
                    SiparisListesi.Add(sp);

                    int sepetID = int.Parse((item.FindControl("lblSepetID") as Label).Text);
                    var sorgu = (from x in db.SepetDetaylaris where x.SepetID == sepetID && x.UrunID == sp.UrunID select x).FirstOrDefault();
                    if (sorgu != null)
                    {
                     SepetSilinecekUrunListesi.Add(sorgu);   
                    }
                    
                }
            }
            db.SiparisDetaylaris.InsertAllOnSubmit(SiparisListesi);
            db.SepetDetaylaris.DeleteAllOnSubmit(SepetSilinecekUrunListesi);
            db.SubmitChanges();
            SepetiDoldur();
        }
    }
}  